/* FunChat 工具类样式 */

/* 显示与隐藏 */
.hidden {
  display: none !important;
}

.visible {
  visibility: visible !important;
}

.invisible {
  visibility: hidden !important;
}

/* 文本对齐 */
.text-left {
  text-align: left !important;
}

.text-center {
  text-align: center !important;
}

.text-right {
  text-align: right !important;
}

.text-justify {
  text-align: justify !important;
}

/* 文本样式 */
.text-bold {
  font-weight: var(--font-weight-semibold) !important;
}

.text-normal {
  font-weight: var(--font-weight-regular) !important;
}

.text-italic {
  font-style: italic !important;
}

.text-underline {
  text-decoration: underline !important;
}

.text-strike {
  text-decoration: line-through !important;
}

.text-uppercase {
  text-transform: uppercase !important;
}

.text-lowercase {
  text-transform: lowercase !important;
}

.text-capitalize {
  text-transform: capitalize !important;
}

/* 文本颜色 */
.text-primary {
  color: var(--primary-color) !important;
}

.text-success {
  color: var(--success-color) !important;
}

.text-warning {
  color: var(--warning-color) !important;
}

.text-error {
  color: var(--error-color) !important;
}

.text-info {
  color: var(--info-color) !important;
}

.text-muted {
  color: var(--text-color-tertiary) !important;
}

/* 背景颜色 */
.bg-primary {
  background-color: var(--primary-color) !important;
}

.bg-success {
  background-color: var(--success-color) !important;
}

.bg-warning {
  background-color: var(--warning-color) !important;
}

.bg-error {
  background-color: var(--error-color) !important;
}

.bg-info {
  background-color: var(--info-color) !important;
}

.bg-light {
  background-color: var(--background-color-secondary) !important;
}

.bg-white {
  background-color: var(--background-color-primary) !important;
}

/* 边框 */
.border {
  border: 1px solid var(--border-color-normal) !important;
}

.border-top {
  border-top: 1px solid var(--border-color-normal) !important;
}

.border-right {
  border-right: 1px solid var(--border-color-normal) !important;
}

.border-bottom {
  border-bottom: 1px solid var(--border-color-normal) !important;
}

.border-left {
  border-left: 1px solid var(--border-color-normal) !important;
}

.border-0 {
  border: 0 !important;
}

.border-top-0 {
  border-top: 0 !important;
}

.border-right-0 {
  border-right: 0 !important;
}

.border-bottom-0 {
  border-bottom: 0 !important;
}

.border-left-0 {
  border-left: 0 !important;
}

.border-primary {
  border-color: var(--primary-color) !important;
}

.border-success {
  border-color: var(--success-color) !important;
}

.border-warning {
  border-color: var(--warning-color) !important;
}

.border-error {
  border-color: var(--error-color) !important;
}

/* 圆角 */
.rounded {
  border-radius: var(--border-radius-base) !important;
}

.rounded-sm {
  border-radius: var(--border-radius-small) !important;
}

.rounded-lg {
  border-radius: var(--border-radius-large) !important;
}

.rounded-circle {
  border-radius: var(--border-radius-circle) !important;
}

.rounded-0 {
  border-radius: 0 !important;
}

/* 阴影 */
.shadow-sm {
  box-shadow: var(--shadow-small) !important;
}

.shadow {
  box-shadow: var(--shadow-medium) !important;
}

.shadow-lg {
  box-shadow: var(--shadow-large) !important;
}

.shadow-none {
  box-shadow: none !important;
}

/* 宽度和高度 */
.w-25 {
  width: 25% !important;
}

.w-50 {
  width: 50% !important;
}

.w-75 {
  width: 75% !important;
}

.w-100 {
  width: 100% !important;
}

.w-auto {
  width: auto !important;
}

.h-25 {
  height: 25% !important;
}

.h-50 {
  height: 50% !important;
}

.h-75 {
  height: 75% !important;
}

.h-100 {
  height: 100% !important;
}

.h-auto {
  height: auto !important;
}

/* 位置 */
.position-static {
  position: static !important;
}

.position-relative {
  position: relative !important;
}

.position-absolute {
  position: absolute !important;
}

.position-fixed {
  position: fixed !important;
}

.position-sticky {
  position: sticky !important;
}

/* 定位 */
.top-0 {
  top: 0 !important;
}

.right-0 {
  right: 0 !important;
}

.bottom-0 {
  bottom: 0 !important;
}

.left-0 {
  left: 0 !important;
}

/* 溢出 */
.overflow-auto {
  overflow: auto !important;
}

.overflow-hidden {
  overflow: hidden !important;
}

.overflow-visible {
  overflow: visible !important;
}

.overflow-scroll {
  overflow: scroll !important;
}

.overflow-x-auto {
  overflow-x: auto !important;
}

.overflow-y-auto {
  overflow-y: auto !important;
}

.overflow-x-hidden {
  overflow-x: hidden !important;
}

.overflow-y-hidden {
  overflow-y: hidden !important;
}

/* 鼠标样式 */
.cursor-pointer {
  cursor: pointer !important;
}

.cursor-default {
  cursor: default !important;
}

.cursor-not-allowed {
  cursor: not-allowed !important;
}

.cursor-text {
  cursor: text !important;
}

.cursor-move {
  cursor: move !important;
}

.cursor-grab {
  cursor: grab !important;
}

.cursor-grabbing {
  cursor: grabbing !important;
}

/* 用户选择 */
.user-select-none {
  user-select: none !important;
}

.user-select-all {
  user-select: all !important;
}

.user-select-auto {
  user-select: auto !important;
}

.user-select-text {
  user-select: text !important;
}

/* 透明度 */
.opacity-0 {
  opacity: 0 !important;
}

.opacity-25 {
  opacity: 0.25 !important;
}

.opacity-50 {
  opacity: 0.5 !important;
}

.opacity-75 {
  opacity: 0.75 !important;
}

.opacity-100 {
  opacity: 1 !important;
}

/* 显示 */
.d-none {
  display: none !important;
}

.d-inline {
  display: inline !important;
}

.d-inline-block {
  display: inline-block !important;
}

.d-block {
  display: block !important;
}

.d-flex {
  display: flex !important;
}

.d-inline-flex {
  display: inline-flex !important;
}

.d-grid {
  display: grid !important;
}

/* Flex 工具类 */
.flex-row {
  flex-direction: row !important;
}

.flex-column {
  flex-direction: column !important;
}

.flex-row-reverse {
  flex-direction: row-reverse !important;
}

.flex-column-reverse {
  flex-direction: column-reverse !important;
}

.flex-wrap {
  flex-wrap: wrap !important;
}

.flex-nowrap {
  flex-wrap: nowrap !important;
}

.flex-wrap-reverse {
  flex-wrap: wrap-reverse !important;
}

.justify-content-start {
  justify-content: flex-start !important;
}

.justify-content-end {
  justify-content: flex-end !important;
}

.justify-content-center {
  justify-content: center !important;
}

.justify-content-between {
  justify-content: space-between !important;
}

.justify-content-around {
  justify-content: space-around !important;
}

.justify-content-evenly {
  justify-content: space-evenly !important;
}

.align-items-start {
  align-items: flex-start !important;
}

.align-items-end {
  align-items: flex-end !important;
}

.align-items-center {
  align-items: center !important;
}

.align-items-baseline {
  align-items: baseline !important;
}

.align-items-stretch {
  align-items: stretch !important;
}

.align-content-start {
  align-content: flex-start !important;
}

.align-content-end {
  align-content: flex-end !important;
}

.align-content-center {
  align-content: center !important;
}

.align-content-between {
  align-content: space-between !important;
}

.align-content-around {
  align-content: space-around !important;
}

.align-content-stretch {
  align-content: stretch !important;
}

.align-self-auto {
  align-self: auto !important;
}

.align-self-start {
  align-self: flex-start !important;
}

.align-self-end {
  align-self: flex-end !important;
}

.align-self-center {
  align-self: center !important;
}

.align-self-baseline {
  align-self: baseline !important;
}

.align-self-stretch {
  align-self: stretch !important;
}

.flex-grow-0 {
  flex-grow: 0 !important;
}

.flex-grow-1 {
  flex-grow: 1 !important;
}

.flex-shrink-0 {
  flex-shrink: 0 !important;
}

.flex-shrink-1 {
  flex-shrink: 1 !important;
}

.order-first {
  order: -1 !important;
}

.order-last {
  order: 999 !important;
}

.order-0 {
  order: 0 !important;
}

.order-1 {
  order: 1 !important;
}

.order-2 {
  order: 2 !important;
}

.order-3 {
  order: 3 !important;
}

.order-4 {
  order: 4 !important;
}

.order-5 {
  order: 5 !important;
}

/* 字体大小 */
.fs-mini {
  font-size: var(--font-size-mini) !important;
}

.fs-small {
  font-size: var(--font-size-small) !important;
}

.fs-base {
  font-size: var(--font-size-base) !important;
}

.fs-medium {
  font-size: var(--font-size-medium) !important;
}

.fs-large {
  font-size: var(--font-size-large) !important;
}

.fs-xlarge {
  font-size: var(--font-size-xlarge) !important;
}

.fs-xxlarge {
  font-size: var(--font-size-xxlarge) !important;
}

/* 响应式显示 */
@media (max-width: 576px) {
  .d-none-xs {
    display: none !important;
  }
}

@media (min-width: 576px) and (max-width: 768px) {
  .d-none-sm {
    display: none !important;
  }
}

@media (min-width: 768px) and (max-width: 992px) {
  .d-none-md {
    display: none !important;
  }
}

@media (min-width: 992px) and (max-width: 1200px) {
  .d-none-lg {
    display: none !important;
  }
}

@media (min-width: 1200px) {
  .d-none-xl {
    display: none !important;
  }
}
